Eingabewerte zurücksetzen

[Dies ist ein Fallbeispiel, das in einem separaten Fenster angezeigt wird. So können Sie das Beispiel und ein beliebiges anderes Hilfethema gleichzeitig betrachten. Das Fenster des Fallbeispiels lässt sich verschieben, in seiner Grösse ändern und über das Schliessfeld verlassen]

Das Hilfethema Grafische Benutzerschnittstelle führt an einfachen Steuerelementen in die Programmierung von Ereignissen ein. Im folgenden vertiefen wir die ereignisgetriebene Programmierung am Listenfeld TxtAufgabentyp des Formulars FrmAllgemeines. Anhand des folgenden Beispiels zeigen wir, wie zwei Ereignisse und zwei Ereignisprozeduren zusammenspielen:

  1. Der Benutzer gehe im Listenfeld LstAufgabentyp von "Mehrfachwahl" auf "Zuordnung":

  1. Weil dies die Integrität der Aufgabendaten beeinträchtigen kann, erscheint die Meldung: "Wollen Sie den Typ wirklich ändern?

  1. Falls der Benutzer die Frage bejaht, wird seine Änderung durchgeführt. Im anderen Fall wird die Änderung zurückgesetzt.

Die beteiligten Ereignisse und Ereignisprozeduren können Sie inspizieren, indem Sie wie folgt zur Eigenschaftenliste und den Ereignisprozeduren des Steuerelements LstAufgabentyp gelangen:

  1. Wechseln Sie zur Entwurfsansicht (»Ansicht/Entwurfsansicht).

  2. Klicken Sie auf das Steuerelement LstAufgabentyp.

  3. Drücken Sie »Alt/Enter und versuchen Sie, die Einträge der Eigenschaftenliste zu verstehen.

  4. Mit einem Klick auf die Ereignisnamen "Beim Klicken" und "Bei Mausbewegung" gelangen Sie zu den Ereignisprozeduren.

Die Ereignisprozedur LstAufgaben_Click fragt die Benutzerin, ob sie den geänderten Aufgabentyp zurücksetzen will. Falls ja, erhält Me![Aufgabentyp] (das Feld Aufgabentyp des laufenden Datensatzes des Formulars FrmAllgemeines) den vorherigen Wert wieder zugewiesen. Die Methode Requery schreibt nachher den zurückgesetzten Wert sofort in die Datenbank zurück.

'Globale Modulvariable, welche das Zurücksetzen eines Wertes ermöglicht
Private letzterAufgabentyp As Byte

'--- Nach jeder Änderung des Aufgabentyps kann der Benutzer seine Wahl zurücksetzen
Private Sub LstAufgabentyp_Click()
  If letzterAufgabentyp <> 0 Then
    If MsgBox("Wollen Sie den Typ wirklich ändern? ...", ...) = vbNo Then
      Me![Aufgabentyp] = letzterAufgabentyp
      LstAufgabentyp.Requery
    End If
  End If
End Sub

Um eine Eingabe rückgängig zu machen, muss man auf den alten Wert zurückgreifen können. Den alten Wert enthält die globale Variable letzterAufgabentyp. Jedesmal, wenn der Benutzer "sich anschickt", den Aufgabentyp zu ändern, speichert die Ereignisprozedur LstAufgabentyp_MouseDown die alte Wahl:

'--- Speichere letzten Aufgabentyp vor jedem Mausklick
Private Sub LstAufgabentyp_MouseDown(...)
   letzterAufgabentyp = Me![Aufgabentyp]
End Sub

Weil jede Änderung das Drücken einer Maustaste voraussetzt, weisen wir den laufenden Wert vor der Änderung mit der Ereignisprozedur LstAufgabentyp_MouseDown der Variablen letzterAufgabentyp zu. Im Gegensatz zum Ereignis MouseDown tritt Click erst dann ein, wenn der Benutzer eine Maustaste drückt und wieder loslässt. Die Ereignisprozedur LstAufgabentyp_Click prüft mit letzterAufgabentyp <> 0, ob das Steuerelement LstAufgabentyp bereits einen Eintrag enthält. Wenn ja und falls der Benutzer die Änderung zurücksetzen will, dann wird die Eingabe zurückgesetzt, indem letzterAufgabentyp dem Listenfeld Me![Aufgabentyp] zugewiesen wird. Me steht vor allen Eigenschaften, die sich auf das laufende Steuerelement beziehen. Sie können sich so die Nennung expliziter Steuerelementnamen ersparen (im Beispiel den Namen LstAufgabentyp).

Listenfeld

MsgBox